﻿#define _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
//用结构体来表示学生
//名字+年龄+成绩
//struct stu  //比喻成模具
//{
//	char name[20];
//	int age;
//	float score;
//	//可以根据实际情况来添加
//}s3 = { "sad",23,24.4f }, s4 = { "sao",34,100.0f };  //如果不加f，那表示就是duble的类型的 加了才是float类型  这个是全局变量
//
//int main()
//{
//	struct stu s1 = { "dedad",23,56.34f }; // 局部变量
//	struct stu s5 = { .score = 34.4f, .name = "asjdd", .age = 15 }; //指定顺序初始化
//	//printf("%s %d,%f ",);
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	int* pa = &a;
//	printf("%d\n", *pa);
//	printf("%p", &a);
//	//printf("%p\n", &a);
//	return 0;
//}

//int main()
//{
//	char ch = 'w';
//	char* pc = &ch;//pc 的类型怎么写呢？
//	*pc = "achao";
//	printf("%s\n", &pc);
//	return 0;
//}

//int main()
//{
//	int a = 100;
//	int* ptr = &a;
//	*ptr = 50;
//	printf("%d\n", *ptr);
//	return 0;
//}

//int main()
//{
//	int n = 0x11223344;
//	int* pi = &n;
//	*pi = 0;
//	return 0;
//}

//int main()
//{
//	int n = 0x11223344;
//	char* pc = (char*)&n;
//	*pc = 0;
//	return 0;
//}

//int main()  // void只能为赋值 不能计算哟
//{
//	int a = 10;
//	void* pa = &a;
//	void* pc = &a;
//
//	*pa = 10;
//	*pc = 0;
//	return 0;
//}

//指针+- 整数
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p = &arr[0];
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", *(p + i));
//	}
//	return 0;
//}

//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p = &arr[0];  //先找到数组的第一位数 后面慢慢推理出来的
//	int sz = sizeof(arr)/ sizeof(arr[0]);
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", *(arr + i));
//	}
//	return 0;
//}


//int my_strlen(char* s)
//{
//	char* p = s;  //求出第一数组的字母；
//	while (*p != '\0')
//		p++;
//	return p - s;
//}
//int main()
//{
//	printf("%d\n", my_strlen("abc"));
//	return 0;
//}


//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10};
//	char* p = &arr[0];
//	for (int i = 0; i < 10; i++)
//	{
//		*p = 1;  //这个是将char的值重新赋值的了
//		p++;
//	}
//
//	for (int i = 0; i < 10; i++)
//	{
//		printf("%d ", *(p+1));
//		//p++;
//	}
//	return 0;
//}


//int main()
//{
//	int arr[10] = { 0 };
//	for(int i = 0 ;i<10;i++)
//	{
//		arr[i] = 1;
//		printf("%d ",arr[i]);  //通过的是下标求的这个值
//	}
//	return 0;
//}


//接下用可以尝试用指针来对这个值求值嘛
//int main()
//{
//	int arr[10] = { 0 };
//	int* pa = (int *) & arr;
//	
//
//	for (int i = 0; i < 10; i++)
//	{
//		*pa = 1;
//		pa++;
//		//printf("%d ",arr[i]);
//	}
//	pa = &arr[0];  //相当于重新把值回归的第一位的值
//	for (int i = 0; i < 10; i++)
//	{
//		printf("%d ", *pa);
//		pa++;
//	}
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	int* pa = &a;
//	char* pc = (char*) & a;  //强制转化为char*
//
//	printf("pa = %p\n", pa);
//	printf("pc = %p\n", pc);
//
//	printf("\n");
//
//	printf("pa+1 = %p\n", pa+1);
//	printf("pc+1 = %p\n", pc+1);
//	return 0;
//}

//int main()
//{
//	int count = 0;
//	int arr[10] = { 0 };
//	char* pa = (int*)&arr;
//	for (int i = 0; i < 40; i++)
//	{
//		*pa = 1;
//		pa+4;
//		//printf("%d ",arr[i]);
//	}
//	//pa = &arr[0];  //相当于重新把值回归的第一位的值
//	for (int i = 0; i < 40; i++)
//	{
//		printf("%d ", *pa);
//		pa+4;
//		count++;
//		
//	}
//	printf("count = %d", count);
//	return 0;
//}


//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p = & arr[9];
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	for (i = 0; i < sz; i++)
//	{
//		//printf("%d ", *(p + i));//p+i 这⾥就是指针+整数
//		//printf("%d ",i[p]);
//		//printf("%d ", p[i]);
//		//printf("%d ", *p);
//		//p++;
//		//printf("%d ", *(p-i));
//		
//	}
//	return 0;
//}


//int my_strlen(char* n)
//{
//	int count = 0;
//	while(*n != '\0')
//	{
//		count++;
//		n++;
//	}
//	return count;
//}


//int my_strlen(char* n)
//{
//	int count = 0;
//	while (*n != '\0')
//	{
//		count++;
//		n++;
//	}
//	return count;
//}
//
//
//int main()
//{
//	int len = my_strlen("abc");
//	printf("%d\n",len);
//	return  0;
//}




//int my_strlen(char* s)  //求的是数组的首元素地址
//{
//	char* start= s;
//	//while (*s !='\0')
//	while(*s)  //\0的ASCLL码值是0  *s 是取得是 字母   而s取的是地址哈
//	{
//		s++;
//	}
//	return  s - start;  //这个就是指针减指针
//
//}
//
//int main()
//{
//	int len = my_strlen("abcdefg");
//	printf("%d\n",len);
//	return  0;
//}


int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int* p = (int*) & arr;
	while (p<arr+sz)
	{
		printf("%d ", *p);
		p++;
	}
	return 0;
}